來到CMoney近兩個月
不到兩星期就要發表我們遊戲專題了
或許會有人不知道做遊戲專題有什麼好處
比起架設網頁等...差在哪了?
我最大的感觸應該就是在邏輯方面會有所突破
從畫面邏輯到遊戲運作邏輯
如何融合組員的程式碼
在這個階段是吸收最多知識的期間了
本週學習
雜湊
->把數值(key)轉換成位置
如果數值是字串:換成ACSII code
重點:
雜湊是不可逆的
常用在Map,加密
常用hash:
- Hashing by division
當除數為偶數,奇數數字餘數必為奇數,偶數數字餘數必為偶數
資料的分布將造成 bucket傾向於偶數/奇數
當除數為奇數,除出來的餘數不一定為固定偶數/奇數
不會因為資料而側重於一端
- Mid-square:
取 key 的平方轉為二進位,並取中間適當位數的值
二進位數中0~22^r-1區間,換算成十進位
- Folding:
- Shift folding
- Folding at the boundaries
將key k切割成數個部分,將每個部分相加後即為k位址
Over flow溢出:
解決方法:
- 通常使用以下方式:
- Open addressing:於未滿的bucket找出空位填入
-> Linear probing, Quadratic probing, Random probing
- Chaining: 每一個 bucket 存放對應的 list 來儲存所有 home bucket
-> Chain, Array linear list